// pages/my/my.js
const { get } = require('../../utils/request')
const { showConfirm, showError, checkLoginForTabBar } = require('../../utils/util')

Page({
  data: {
    userInfo: null,
    adoptionCount: 0,
    rescueCount: 0,
    donationCount: 0,
    donationAmount: 0,
    // 管理员统计数据
    adminStats: {
      petCount: 0,
      adoptionCount: 0,
      rescueCount: 0,
      donationCount: 0,
      userCount: 0,
      noticeCount: 0
    }
  },

  onLoad() {
    // 页面加载时不检查登录状态，在onShow中检查
  },

  onShow() {
    // 每次显示页面时刷新登录状态
    const app = getApp()
    if (app && app.refreshLoginStatus) {
      app.refreshLoginStatus()
    }

    // 检查登录状态
    if (!checkLoginForTabBar()) {
      return
    }

    this.loadUserInfo()
  },

  // 加载用户信息
  loadUserInfo() {
    const app = getApp()
    if (app.globalData.isLogin && app.globalData.userInfo && app.globalData.userInfo.token) {
      this.setData({
        userInfo: app.globalData.userInfo
      })
      // 延迟加载统计数据，确保页面已经渲染
      setTimeout(() => {
        this.loadUserStats()

        // 如果是管理员，加载管理员统计数据
        if (app.globalData.userInfo.role === 'ADMIN') {
          this.loadAdminStats()
        }
      }, 100)
    } else {
      // 清空数据
      this.setData({
        userInfo: null,
        adoptionCount: 0,
        rescueCount: 0,
        donationCount: 0,
        donationAmount: 0,
        'adminStats.petCount': 0,
        'adminStats.adoptionCount': 0,
        'adminStats.rescueCount': 0,
        'adminStats.donationCount': 0,
        'adminStats.userCount': 0,
        'adminStats.noticeCount': 0
      })
    }
  },

  // 加载用户统计数据
  loadUserStats() {
    if (!this.data.userInfo || !this.data.userInfo.id) {
      console.log('用户信息不完整，跳过统计数据加载')
      return
    }

    const userId = this.data.userInfo.id
    console.log('开始加载用户统计数据，用户ID:', userId)

    // 加载领养申请数量
    get('/adoption/list', { userId }).then(res => {
      if (res && res.code === '200') {
        this.setData({
          adoptionCount: res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载领养申请数量失败:', err)
      // 如果是token过期，不需要额外处理，request.js已经处理了
      if (err && err.code !== '401') {
        this.setData({
          adoptionCount: 0
        })
      }
    })

    // 加载救助申请数量
    get('/rescue/list', { userId }).then(res => {
      if (res && res.code === '200') {
        this.setData({
          rescueCount: res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载救助申请数量失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          rescueCount: 0
        })
      }
    })

    // 加载捐助统计
    get('/donation/list', { userId }).then(res => {
      if (res && res.code === '200') {
        const donations = res.data || []
        let totalAmount = 0

        donations.forEach(item => {
          totalAmount += parseFloat(item.amount || 0)
        })

        this.setData({
          donationCount: donations.length,
          donationAmount: totalAmount.toFixed(0)
        })
      }
    }).catch(err => {
      console.error('加载捐助统计失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          donationCount: 0,
          donationAmount: 0
        })
      }
    })
  },

  // 加载管理员统计数据
  loadAdminStats() {
    console.log('开始加载管理员统计数据')

    // 加载宠物数量
    get('/pet/list').then(res => {
      if (res && res.code === '200') {
        this.setData({
          'adminStats.petCount': res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载宠物数量失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          'adminStats.petCount': 0
        })
      }
    })

    // 加载领养申请数量
    get('/adoption/list').then(res => {
      if (res && res.code === '200') {
        this.setData({
          'adminStats.adoptionCount': res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载领养申请数量失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          'adminStats.adoptionCount': 0
        })
      }
    })

    // 加载救助申请数量
    get('/rescue/list').then(res => {
      if (res && res.code === '200') {
        this.setData({
          'adminStats.rescueCount': res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载救助申请数量失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          'adminStats.rescueCount': 0
        })
      }
    })

    // 加载捐助数量
    get('/donation/list').then(res => {
      if (res && res.code === '200') {
        this.setData({
          'adminStats.donationCount': res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载捐助数量失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          'adminStats.donationCount': 0
        })
      }
    })

    // 加载用户数量
    get('/user/all').then(res => {
      if (res && res.code === '200') {
        this.setData({
          'adminStats.userCount': res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载用户数量失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          'adminStats.userCount': 0
        })
      }
    })

    // 加载公告数量
    get('/notice/selectAll').then(res => {
      if (res && res.code === '200') {
        this.setData({
          'adminStats.noticeCount': res.data ? res.data.length : 0
        })
      }
    }).catch(err => {
      console.error('加载公告数量失败:', err)
      if (err && err.code !== '401') {
        this.setData({
          'adminStats.noticeCount': 0
        })
      }
    })
  },

  // 跳转到登录页
  goToLogin() {
    wx.navigateTo({
      url: '/pages/login/login'
    })
  },

  // 编辑个人资料
  editProfile() {
    wx.showModal({
      title: '提示',
      content: '个人资料编辑功能开发中...',
      showCancel: false
    })
  },

  // 跳转到我的领养申请
  goToMyAdoption() {
    if (!this.data.userInfo) {
      this.goToLogin()
      return
    }
    wx.navigateTo({
      url: '/pages/my-adoption/my-adoption'
    })
  },

  // 跳转到我的救助申请
  goToMyRescue() {
    if (!this.data.userInfo) {
      this.goToLogin()
      return
    }
    wx.navigateTo({
      url: '/pages/my-rescue/my-rescue'
    })
  },

  // 管理员功能跳转
  goToPetManage() {
    wx.navigateTo({
      url: '/pages/admin/pet-manage/pet-manage'
    })
  },

  goToAdoptionManage() {
    wx.navigateTo({
      url: '/pages/admin/adoption-manage/adoption-manage'
    })
  },

  goToRescueManage() {
    wx.navigateTo({
      url: '/pages/admin/rescue-manage/rescue-manage'
    })
  },

  goToDonationManage() {
    wx.navigateTo({
      url: '/pages/admin/donation-manage/donation-manage'
    })
  },

  goToUserManage() {
    wx.navigateTo({
      url: '/pages/admin/user-manage/user-manage'
    })
  },

  goToNoticeManage() {
    wx.navigateTo({
      url: '/pages/admin/notice-manage/notice-manage'
    })
  },


  // 关于我们
  aboutUs() {
    wx.showModal({
      title: '关于我们',
      content: '流浪宠物救助系统致力于为流浪宠物提供救助和领养服务，让每一个小生命都能找到温暖的家。',
      showCancel: false,
      confirmText: '知道了'
    })
  },

  // 联系我们
  contactUs() {
    wx.showModal({
      title: '联系我们',
      content: '第14组',
      showCancel: false,
      confirmText: '知道了'
    })
  },

  // 退出登录
  async logout() {
    try {
      await showConfirm('确定要退出登录吗？')
      
      const app = getApp()
      app.logout()
      
      // 刷新页面数据
      this.loadUserInfo()
      
    } catch {
      // 用户取消
    }
  }
})
